/*
 * @Description: 消费者 - 升级版 - 消费者1
 * @Author: rendc
 * @Date: 2024-10-11 14:55:40
 * @LastEditors: rendc
 * @LastEditTime: 2024-10-11 15:40:32
 */

/**
 * Customer1
 */
public class Customer1 extends Thread {
  // 包子
  private BaoZi baoZi;
  private String name;

  // 构造器
  public Customer1() {
  }

  // 全参构造器
  public Customer1(BaoZi baoZi, String name) {
    this.baoZi = baoZi;
    this.name = name;
  }

  // 重写run方法
  @Override
  public void run() {
    for (int i = 1; i <= 100; i++) {
      // 同步
      synchronized (baoZi) {
        // 吃包子
        while (baoZi.flag != 1) {
          // 如果没有包子 要等一会儿
          try {
            baoZi.wait();
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
        // 开始吃包子
        System.out.println(this.name + "第" + i + "次，吃包子。");
        baoZi.num--;
        System.out.println("消费完成，剩余包子数量：" + baoZi.num);
        // 消费完成 修改包子存在的标记
        baoZi.flag = 2;
        // 通知生产者 生产包子 ？
        baoZi.notifyAll();
      }
    }
  }
}